package modelo;

import java.util.Collection;
import java.util.ArrayList;
import java.lang.Math;


public class BibliotecaDeObjetosRobados{
        
        Collection<ObjetoRobadoComun> obj_comunes;
        Collection<ObjetoRobadoValioso> obj_valiosos;
        Collection<ObjetoRobadoMuyValioso> obj_muy_valiosos;
        BibliotecaDeCiudades biblio;

        public BibliotecaDeObjetosRobados(BibliotecaDeCiudades biblio){
            obj_comunes = new ArrayList<ObjetoRobadoComun>();
            obj_valiosos = new ArrayList<ObjetoRobadoValioso>();
            obj_muy_valiosos = new ArrayList<ObjetoRobadoMuyValioso>();
            this.biblio = biblio;
        }
        
        public boolean agregarObjetoRobadoComun(String nombre, String nombre_ciudad){
        	Ciudad ciudad = biblio.obtenerCiudad(nombre_ciudad);
            if (ciudad == null) return false;
        	ObjetoRobadoComun obj = new ObjetoRobadoComun(nombre, ciudad);
            for (ObjetoRobadoComun objeto : obj_comunes){
            	if (objeto.equals(obj)) return false;
            }
            obj_comunes.add(obj);
            return true;
        }

        public boolean agregarObjetoRobadoValioso(String nombre, String nombre_ciudad){
            Ciudad ciudad = biblio.obtenerCiudad(nombre_ciudad);
            if (ciudad == null) return false;
        	ObjetoRobadoValioso obj = new ObjetoRobadoValioso(nombre, ciudad);
        	for (ObjetoRobadoValioso objeto : obj_valiosos){
            	if (objeto.equals(obj)) return false;
            }
        	obj_valiosos.add(obj);
            return true;
        }
        
        public boolean agregarObjetoRobadoMuyValioso(String nombre, String nombre_ciudad){
            Ciudad ciudad = biblio.obtenerCiudad(nombre_ciudad);
            if (ciudad == null) return false;
            ObjetoRobadoMuyValioso obj = new ObjetoRobadoMuyValioso(nombre, ciudad);
            for (ObjetoRobadoMuyValioso objeto : obj_muy_valiosos){
            	if (objeto.equals(obj)) return false;
            }
            obj_muy_valiosos.add(obj);
            return true;
        }

        public ObjetoRobado obtenerUnObjetoRobadoComun(){
            if (obj_comunes.size() == 0){
                return null;
            }
            return ((ArrayList<ObjetoRobadoComun>) obj_comunes).get((int) (Math.random() * obj_comunes.size()));
        }

        public ObjetoRobado obtenerUnObjetoRobadoValioso(){
            if (obj_valiosos.size() == 0){
                return null;
            }
            return ((ArrayList<ObjetoRobadoValioso>) obj_valiosos).get((int) (Math.random() * obj_valiosos.size()));
        }

        public ObjetoRobado obtenerUnObjetoRobadoMuyValioso(){
            if (obj_muy_valiosos.size() == 0){
                return null;
            }
            return ((ArrayList<ObjetoRobadoMuyValioso>) obj_muy_valiosos).get((int) (Math.random() * obj_muy_valiosos.size()));
        }
        
}